<?php

/**
 * Fournit les actions qui s'effectue au sein de l'espace privé 
 */
class Myspace_IndexController extends Zend_Controller_Action {

    /**
     * Vérifie que l'utilisateur est bien identifié pour accéder à cette partie du site
     * Et initialise le bon layout
     */
    public function init() {
        if (!Zend_Auth::getInstance()->hasIdentity()) {
            $this->_helper->redirector('index', 'index', 'index');
        }
        $this->_helper->layout->setLayout('myspace');
    }

    /**
     * Permet d'afficher l'index de l'espace privé de l'utilisateur.
     * Affiche notamment les formulaires permettant de changer les valeurs de son compte
     */
    public function indexAction() {
        // On crée les formulaires
        $formUsername = new Myspace_Form_Username();
        $formPassword = new Myspace_Form_Password();
        // Le message associé au changement
        $formMessage = '';

        $request = $this->getRequest();
        if ($request->isPost()) { // si post, les infos du user ont été modifié
            // On récupère le user en quesio
            $mapper = new ZendTremplin_Model_UserMapper();
            $user = $mapper->findByLogin(Zend_Auth::getInstance()->getIdentity());

            // On regarde si c'est le login ou le pwd qui a été modifié
            $postData = $request->getPost();
            if (isset($postData['login'])) {
                if ($formUsername->isValid($request->getPost())) {
                    Zend_Auth::getInstance()->getStorage()->write($postData['login']);
                    $user->setLogin($postData['login']);
                    $formMessage = Zend_Registry::get('Zend_Translate')->_('Your user name has been changed successfully') . '!';
                }
            } elseif (isset($postData['pwd'])) {
                if ($formPassword->isValid($request->getPost())) {
                    $user->setPwd($postData['pwd']);
                    $formMessage = Zend_Registry::get('Zend_Translate')->_('Your password has been changed successfully') . '!';
                }
            }

            // On sauvegarde le user pour prendre ne compte les modifications
            $mapper->save($user);
        }

        // On affecte les données qui seront utiles à la view
        $this->view->username = Zend_Auth::getInstance()->getIdentity();
        $this->view->formUsername = $formUsername;
        $this->view->formPassword = $formPassword;
        $this->view->formMessage = $formMessage;
    }

    /**
     * Permet à l'utilisateur de se déconnecter de son espace privé 
     */
    public function disconnectAction() {
        Zend_Auth::getInstance()->clearIdentity();
        $this->_helper->redirector('index', 'index', 'index');
    }

}

